package Exception_package2;

public class Exception_demo5 {
    public static void main(String[] args) {
        /*
            throws：写在方法定义处，表示声明一个异常。告诉调用者，使用本方法可能会有哪些异常
            throw：写在方法内，结束方法。手动抛出异常对象，交给调用者。方法中下面的代码不再执行了。

            需求：
                定义一个方法求数组最大值
         */

        int[] arr = null;
        int max = 0;

        try {
            max = getMax(arr);
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(max);
    }

    private static int getMax(int[] arr) throws NullPointerException, ArrayIndexOutOfBoundsException {
        if (arr == null) {
            //手动创建一个异常对象，并把这个异常交给方法的调用者处理
            //此时方法就会结束，下面的代码不会再执行了
            throw new NullPointerException();
        }

        if (arr.length == 0) {
            throw new ArrayIndexOutOfBoundsException();
        }

        System.out.println("看看我执行了吗？");
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }
}
